<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 沙箱模式  
        // 用于隔离应用程序 或者 代码的执行环境  
        // 这个执行环境就是沙箱 

        // 函数内部 间接 或者直接返回一个函数
        // 外部函数 返回一个对象 对象内书写多个函数 


        function outer(){
            let num1 = 111;
            let num2 = 222;
            let str1 = 'hello world';
            const obj = {
                fn1:function(){return num1},
                fn2(){return num2},
                fn3:function(val){num1 = val}
            }

            return obj;
        }

        // 调用函数得到对象   这个对象就是沙箱 

        const s1 = outer();

        console.log(s1.fn1());// 111
        console.log(s1.fn2());//222
        s1.fn3(999);
        console.log(s1.fn1());// 999


        const s2 = outer();

        console.log(s2.fn1()); // 111
        console.log(s2.fn2()); //222
        s2.fn3(7777777777777); // 把num1改为 7777777777777
        console.log(s2.fn1()); // 7777777777777


        // 两个箱子各自独立 
        



    </script>
</body>
</html>